package cn.cxq.learning.math;

/**
 * 牛客题霸-研发最爱考
 * 进制转换
 * 时间限制：C/C++ 1秒，其他语言2秒 空间限制：C/C++ 64M，其他语言128M 热度指数：25609
 * 本题知识点： 位运算
 *  算法知识视频讲解
 * 题目描述
 * 给定一个十进制数M，以及需要转换的进制数N。将十进制数M转化为N进制数
 * 示例1
 * 输入
 * 复制
 * 7,2
 * 返回值
 * 复制
 * "111"
 * 备注:
 * M是32位整数，2<=N<=16.
 */
public class BaseConversion {

    char[] table = new char[]{'A', 'B', 'C', 'D', 'E', 'F'};

    public String solve (int M, int N) {
        // write code here

        StringBuffer result = new StringBuffer();

        int m;

        if (M < 0) {
            m = -M;
        } else {
            m = M;
        }

        while (m != 0) {
            int cur = m % N;
            if (cur > 9) {
                result.append(table[cur - 10]);
            }else {
                result.append(cur);
            }

            m /= N;
        }

        if(M < 0) {
            result.append('-');
        }

        return result.reverse().toString();
    }
}
